﻿/************************************************************************

   Extended Silverlight Toolkit

   Copyright (C) 2010-2012 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://extendedsilverlight.codeplex.com/license

   Please purchase a commercial version of this toolkit if you are using
   it in a commercial product. The commercial versions support the project,
   and also include more features for each control, priority support,
   source code, updates, removed watermark, and a proprietary license.

   Visit http://xceed.com and follow @datagrid on Twitter.

  **********************************************************************/

using System;

namespace Xceed.Silverlight.DataGrid.Export
{
  public class ExportContext
  {
    internal ExportContext()
    {
      m_columns = new ExportColumnCollection();
      this.CurrentColumnIndex = -1;
    }

    #region CurrentColumn Property

    public ExportColumn CurrentColumn
    {
      get
      {
        if( this.CurrentColumnIndex < 0 )
        {
          return null;
        }
        else
        {
          return this.Columns[ this.CurrentColumnIndex ];
        }
      }
    }

    #endregion

    #region FieldIndex Property

    public int FieldIndex
    {
      get
      {
        if( this.CurrentColumnIndex < 0 )
        {
          return -1;
        }
        else
        {
          return this.CurrentColumnIndex;
        }
      }
    }

    #endregion

    #region Columns Property

    internal ExportColumnCollection Columns
    {
      get
      {
        return m_columns;
      }
    }

    #endregion

    #region CurrentColumnIndex Property

    // Favour the ResetColumnEnumerator and MoveNextColumn methods instead of setting 
    // this property directly. This property should always be kept at -1 except when 
    // exporting fields.
    internal int CurrentColumnIndex
    {
      get;
      set;
    }

    #endregion

    internal void ResetColumnEnumerator()
    {
      this.CurrentColumnIndex = -1;
    }

    internal bool MoveNextColumn()
    {
      this.CurrentColumnIndex++;

      if( this.CurrentColumnIndex < this.Columns.Count )
      {
        return true;
      }
      else
      {
        this.CurrentColumnIndex = -1;
        return false;
      }
    }

    private ExportColumnCollection m_columns;
  }
}
